package com.zack.poissonwine;

/**
 * @author zack
 * @create 2019-08-02-14:31
 */
public class PoissonWine {
    private int b1 = 12;
    private int b2 = 8;
    private int b3 = 5;
    private int target = 13;

    private void pourBottle(int init1, int init2, int init3) {
        if (init1 == target || init2 == target || init3 == target) {
            System.out.println("make it");
            return;
        }
        /**
         * pourBottle（A,B,C）过程中要确保的就是（）中的参数ABC 无论怎么变化都是init1+init2+init3
         * A-->B-->C-->A
         */
        if (init2 != 0 && init3 != b3) {
            if (init2 + init3 <= b3) {
                //到不满
                pourBottle(init1, 0, init2 + init3);
            } else {
                pourBottle(init1, init2 - (b3 - init3), b3);
            }
        } else if (init3 == b3) {
            //瓶子3满了 那就需要往瓶子1进行倒酒
            if (init3 + init1 <= b1) {
                pourBottle(init1 + init3, init2, 0);
            } else {
                pourBottle(b1, init2, init3 - (b1 - init1));
            }
        } else if (init2 == 0) {
            //瓶子1往瓶子2进行倒，会溢出的情况
            pourBottle(init1 - b2, b2, init3);
        } else {
            //瓶子1往瓶子2进行倒，不会溢出的情况
            pourBottle(0, init1 + init2, init3);
        }
    }

    public static void main(String[] args) {
        PoissonWine poissonWine = new PoissonWine();
        poissonWine.pourBottle(6, 6, 0);
    }
}
